package data_source.DAO.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import domain.pojo.Paciente;
import util.DefaultException;

/**
 * Classe que implementa métodos de manipulação de dados de pacientes
 * @author Owner
 */
public class PacienteDAO extends GeralDAO{
   
    /**
     * Define que a tabela ser usada é a de pacientes
     */
    public PacienteDAO(){
	super("paciente");
    }
    
    /**
     * Conta a quantidade de pacientes
     * @return quantidade de pacientes
     */
    public int getQuantidade(){
	return getCountItem("*");
    }
    
    /**
     * Pega id do paciente segundo o nome
     * @param nome nome do paciente
     * @return id do paciente
     */
    public int getIdNome(String nome){
	return getIntFromItem("id","nome",nome);
    }
    
    /**
     * Pega nome pela id do paciente
     * @param id id do paciente
     * @return nome do paciente
     */
    public String getNomeFromID(String id){
	return getStringFromItem("nome","id",id);
    }
        
    public String[] getNomePacientes(){
	return getNomes();
    }    
        
    /**
     * Pega dados de pacientes
     * @param quantidade quantidade de pacientes
     * @return matriz com dados dos pacientes
     */
    public Object[][] getDados(int quantidade){
	Object[][] data = null;
	ResultSet rs = consultALL();
	
	try{
	    data = new Object[quantidade][6];
	    int i = 0;
	    while ( rs.next () ){
		data[i][0] = rs.getString("cpf");
		data[i][1] = rs.getString("nome");
		data[i][2] = rs.getString("telefone");
		data[i][3] = rs.getString("endereco");
		data[i][4] = rs.getString("data_nascimento");
		data[i][5] = rs.getString("id");
		i++;
	    }
	} catch (SQLException e) {
	    e.printStackTrace();
	}
	return data;
    }
    
    /**
     * Inclui paciente no banco de dados
     * @param paciente paciente a ser incluso
     * @throws DefaultException
     */
    public void incluir(Paciente paciente) throws DefaultException{
	String sql = "INSERT INTO pacientes (cpf, nome, endereco, telefone, data_nascimento) "
			     + "VALUES " + "('"+ paciente.getCpf()     +"', '"+
						 paciente.getNome()    +"', '"+
					         paciente.getEndereco()+"', '"+
						 paciente.getTelefone()+"', '"+
						 paciente.getData_nascimento()+"' )";
	System.out.println(sql);
	include(sql);
    }
    
    /**
     * Atualiza dados de paciente no banco de dados
     * @param paciente paciente a ser atualizado
     * @throws DefaultException
     */
    public void atualizar(Paciente paciente) throws DefaultException{
	String sql = "UPDATE pacientes SET cpf = '"	     + paciente.getCpf() + "', "
				     + "nome = '"	     + paciente.getNome() + "', "
		                     + "endereco = '"	     + paciente.getEndereco() + "', "
				     + "telefone = '"	     + paciente.getTelefone() + "', "
				     + "data_nascimento = '" + paciente.getData_nascimento() + "' "
				     + "WHERE id = "	     + paciente.getId() + "";
	updateOne(sql);
    }
    
    /**
     * Exclui paciente pelo seu id
     * @param id id do paciente
     * @throws DefaultException
     */
    public void excluir( int id) throws DefaultException{
	delete("id",String.valueOf(id));
    }
}
